﻿#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

// 乒乓球筐: 给定两个乒乓球筐，每个乒乓球的种类用不同的大写字母表示。请问第一个乒乓球筐内是否完全包含第二个乒乓球筐内所有乒乓球的种类和数量？
long long arr1[26] = { 0 };
long long arr2[26] = { 0 };
int main() {
    string str1;
    string str2;
    cin >> str1 >> str2;
    for (auto it : str1)
    {
        arr1[it - 'A']++;
    }
    for (auto it : str2)
    {
        arr2[it - 'A']++;
    }
    int i = 0;
    for (; i < 26; i++)
    {
        if (arr1[i] < arr2[i])
            break;
    }
    if (i < 26)
        cout << "No";
    else
        cout << "Yes";
    return 0;
}


// 牛牛举办了一次编程比赛，参加比赛的有 3 * n个选手，每个选手都有一个水平值。现在要将这些选手进行组队，一共组成n个队伍，
// 即每个队伍3人。牛牛发现队伍的水平值等于该队伍队员中第二高水平值。为了让比赛更有看点，牛牛想安排队伍使所有队伍的水平值总和最大。
int main() 
{
    int n;
    cin >> n;
    vector<long long> vec(n * 3);
    for (auto& it : vec)
        scanf("%lld", &it);
    sort(vec.begin(), vec.end());
    long long count = 0;
    int i = vec.size() - 2;
    while (n--)
    {
        count += vec[i];
        i -= 2;
    }
    printf("%lld", count);
    return 0;
}


// 删除相邻数字的最大分数: 给定一个长度为 n 的仅包含正整数的数组，另外有一些操作，每次操作你可以选择数组中的任意一个元素 ai​，
// 同时数组中所有等于 ai −1 和 ai​ + 1  的元素会被全部移除，同时你可以得到ai​分，直到所有的元素都被选择或者删除。请你计算最多能得到多少分。
class Solution 
{
    int hash[10001] = { 0 };
public:
    int boredom(vector<int>& a) {
        int max = 0;
        for (auto it : a)
        {
            hash[it] += it;
            if (it > max)
                max = it;
        }
        int f = 0, g = 0, tmp;
        for (int i = 1; i <= max; i++)
        {
            tmp = g;
            g = std::max(f, g);
            f = tmp + hash[i];
        }
        return std::max(f, g);
    }
};

